/* Name: 	Rio Atmadja
   Program:	CardDeck.h
*/

#ifndef CARD_DECK_H
#define CARD_DECK_H
#include <iostream>
using namespace std;

template <class Type>
class CardDeck {

	public:
		
		CardDeck(); //default constructor
		~CardDeck(); //default destructor 
		void add(Type); //pushing element into the stack
		Type get(int);//get element at index
		bool isEmpty() const; //check if the stack is empty
		int length(); //return the length of the stack
		void shuffle(); //shuffle the elements
		
		
		void print(); //print the stack element to the console
		void printToFile(); //print to the file
		bool readFile(); //read from the file
		
		// I think these two aren't necessary for our purposes
		Type getTop(); //return the top element of the stack
		void pop(); //remove top card and decrement deck size

	private:
		int size; //variable that keeps track the size of the stack
		int current; //variable to keeps track the length of the stack
		int position; //variable that keeps track position of the list
		Type *list; //pointer to the array that holds the stack elements
		
		bool isFull(); //check if the stack if full
		
};
#include "CardDeck.cpp.h"
#endif



